<?php
// 商余法  如果N大于9，则对应的数字规则参考16进制（比如，10用A表示，等等）
function convert($m, $n)
{
    if ($n == 10) {
        return $m;
    }

    // 创建一个map对象，用来存储对应的字符
    $map = array(
        10 => 'A',
        11 => 'B',
        12 => 'C',
        13 => 'D',
        14 => 'E',
        15 => 'F',
    );

    $stack = array();
    while ($m > 0) {
        // 取出余数
        $mod = $m % $n;
        // 如果大于10的进制，取出余数，并且找到对应的字母
        if ($n > 10) {
            array_unshift($stack, isset($map[$mod]) ? $map[$mod] : $mod);
        } else {
            array_unshift($stack, $mod);
        }
        $m = intval($m / $n);
    }

    $str = '';
    while ($stack) {
        $str .= array_shift($stack);
    }

    return $str;
}
var_dump(convert(5, 2));